home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / TUTORIAL.BIN / HorizontalSlider.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-16  |  3.7 KB  |  196 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Event;
  6. import java.awt.Graphics;
  7.  
  8. public class HorizontalSlider extends Slider {
  9.    protected static final int TICK_HEIGHT = 4;
  10.    private static final int BORDER_X = 15;
  11.    private static final int BORDER_Y = 10;
  12.    private HorizontalSliderTick[] tick;
  13.    private HorizontalSliderThumb thumb = new HorizontalSliderThumbBoth();
  14.  
  15.    public HorizontalSlider() {
  16.       super.style = 2;
  17.       super.min = 1;
  18.       super.max = 10;
  19.       super.freq = 1;
  20.       super.prevPos = super.curPos = 0;
  21.       super.width = 200;
  22.       super.height = 50;
  23.       super.showBorder = true;
  24.       this.tick = null;
  25.    }
  26.  
  27.    public void setTickStyle(int var1) {
  28.       super.style = var1;
  29.       switch (var1) {
  30.          case 0:
  31.             this.thumb = new HorizontalSliderThumbBot();
  32.             break;
  33.          case 1:
  34.             this.thumb = new HorizontalSliderThumbTop();
  35.             break;
  36.          default:
  37.             this.thumb = new HorizontalSliderThumbBoth();
  38.       }
  39.  
  40.       this.do_reshape(super.width, super.height);
  41.       ((Component)this).invalidate();
  42.    }
  43.  
  44.    public int getTickStyle() {
  45.       return super.style;
  46.    }
  47.  
  48.    public boolean mouseDown(Event var1, int var2, int var3) {
  49.       this.moveThumb(var2, true);
  50.       return true;
  51.    }
  52.  
  53.    public boolean mouseDrag(Event var1, int var2, int var3) {
  54.       this.moveThumb(var2, false);
  55.       return true;
  56.    }
  57.  
  58.    private void do_reshape(int var1, int var2) {
  59.       int var3 = 15;
  60.       int var4 = 10;
  61.       if (var1 < var3) {
  62.          var3 = var1 / 4;
  63.       }
  64.  
  65.       if (var2 < var4) {
  66.          var4 = var2 / 4;
  67.       }
  68.  
  69.       int var5 = var3;
  70.       int var6 = var1 - var3;
  71.       int var7 = var4;
  72.       int var8 = var2 - var4;
  73.       if (var3 == 0) {
  74.          var5 = 1;
  75.       }
  76.  
  77.       if (var6 == 0) {
  78.          var6 = 1;
  79.       }
  80.  
  81.       if (var4 == 0) {
  82.          var7 = 1;
  83.       }
  84.  
  85.       if (var8 == 0) {
  86.          var8 = 1;
  87.       }
  88.  
  89.       int var9 = (super.max - super.min) / super.freq + 1;
  90.       this.tick = new HorizontalSliderTick[var9];
  91.       int var10 = (var6 - var5) / (var9 - 1);
  92.  
  93.       for(int var12 = 0; var12 < var9; ++var12) {
  94.          int var11 = var12 * var10;
  95.          this.tick[var12] = new HorizontalSliderTick(var5 + var11, var7, var8, var11);
  96.       }
  97.  
  98.       this.thumb.resize(var10 / 2, var8 - var7 - 4 - 1);
  99.    }
  100.  
  101.    public void reshape(int var1, int var2, int var3, int var4) {
  102.       super.width = var3;
  103.       super.height = var4;
  104.       this.do_reshape(var3, var4);
  105.       super.reshape(var1, var2, var3, var4);
  106.    }
  107.  
  108.    public void paint(Graphics var1) {
  109.       if (this.tick.length != 0) {
  110.          var1.clipRect(0, 0, super.width, super.height);
  111.          this.thumb.draw(var1, this.tick[super.curPos]);
  112.          if (super.prevPos != super.curPos) {
  113.             this.thumb.clip(var1, this.tick[super.prevPos]);
  114.          }
  115.  
  116.          var1.setColor(Color.lightGray);
  117.          var1.fillRect(0, 0, super.width, super.height);
  118.          var1.setColor(Color.black);
  119.          int var6 = super.width - 1;
  120.          int var7 = super.height - 1;
  121.          if (super.showBorder) {
  122.             var1.drawRect(0, 0, var6, var7);
  123.          }
  124.  
  125.          for(int var9 = 0; var9 < this.tick.length; ++var9) {
  126.             boolean var8 = var9 == 0 || var9 == this.tick.length - 1;
  127.             HorizontalSliderTick var2 = this.tick[var9];
  128.             if (super.style == 1 || super.style == 2) {
  129.                var1.drawLine(var2.x, var2.y0 + (var8 ? 0 : 1), var2.x, var2.y0 + 4);
  130.             }
  131.  
  132.             if (super.style == 0 || super.style == 2) {
  133.                var1.drawLine(var2.x, var2.y1 - 4, var2.x, var2.y1 - (var8 ? 0 : 1));
  134.             }
  135.          }
  136.  
  137.          HorizontalSliderTick var10 = this.tick[0];
  138.          int var5 = (var10.y1 + var10.y0) / 2;
  139.          int var3 = var10.x - 5;
  140.          int var4 = this.tick[this.tick.length - 1].x + 5;
  141.          var1.drawLine(var3, var5, var4, var5);
  142.          var1.setColor(Color.gray);
  143.          var1.drawLine(var4 + 1, var5 - 1, var3 - 1, var5 - 1);
  144.          var1.drawLine(var3 - 1, var5 - 1, var3 - 1, var5 + 1);
  145.          var1.setColor(Color.lightGray);
  146.          var1.drawLine(var3, var5 + 1, var4 + 1, var5 + 1);
  147.          var1.drawLine(var4 + 1, var5 + 1, var4 + 1, var5);
  148.          var1.setColor(Color.white);
  149.          var1.drawLine(var3 - 1, var5 + 2, var4 + 2, var5 + 2);
  150.          var1.drawLine(var4 + 2, var5 + 2, var4 + 2, var5 - 1);
  151.          var1.clipRect(0, 0, super.width, super.height);
  152.          this.thumb.draw(var1, this.tick[super.curPos]);
  153.          super.prevPos = super.curPos;
  154.       }
  155.    }
  156.  
  157.    protected void doMove(int var1, boolean var2) {
  158.       if (this.tick == null) {
  159.          super.prevPos = super.curPos = var1;
  160.       } else {
  161.          if (var1 >= this.tick.length) {
  162.             var1 = this.tick.length - 1;
  163.          }
  164.  
  165.          if (var1 != super.curPos || var2) {
  166.             super.prevPos = super.curPos;
  167.             super.curPos = var1;
  168.             this.paint(((Component)this).getGraphics());
  169.             ((Component)this).postEvent(new Event(this, 1001, new Integer(super.curPos * super.freq + super.min)));
  170.          }
  171.  
  172.       }
  173.    }
  174.  
  175.    private void moveThumb(int var1, boolean var2) {
  176.       if (this.tick.length > 1) {
  177.          int var3 = this.tick[1].x - this.tick[0].x;
  178.          if (var3 == 0) {
  179.             return;
  180.          }
  181.  
  182.          int var4 = (var1 - this.tick[0].x) / var3;
  183.          if (var4 < 0) {
  184.             var4 = 0;
  185.          }
  186.  
  187.          if ((var1 - this.tick[0].x) % var3 > var3 / 2) {
  188.             ++var4;
  189.          }
  190.  
  191.          this.doMove(var4, var2);
  192.       }
  193.  
  194.    }
  195. }
  196.